using System;
using System.Collections.Generic;
using System.Security.Cryptography.X509Certificates;

namespace InfiniTec.Security.Certificates
{
    public class CertificateInfo
    {
        private string _KeyContainer;
        private KeySpecification _keySpecification;
        private CspOptions _CspOptions;
        private CryptographicProvider _provider = CryptographicProvider.RsaFull;
        private string _distinguishedName;
        private DateTime? _StartDate;
        private DateTime? _EndDate;
        private X509Store _TargetStore;
        private string _providerName;
    	private ICollection<AlternateSubjectName> _AlternateSubjectNames;

    	public ICollection<AlternateSubjectName> AlternateSubjectNames { get { return _AlternateSubjectNames; } }


    	public X509Store TargetStore
        {
            get { return _TargetStore; }
            set { _TargetStore = value; }
        }

        public DateTime? StartDate
        {
            get { return _StartDate; }
            set { _StartDate = value; }
        }

        public DateTime? EndDate
        {
            get { return _EndDate; }
            set { _EndDate = value; }
        }

        public string KeyContainer
        {
            get { return _KeyContainer; }
            set { _KeyContainer = value; }
        }

        public KeySpecification KeySpecification
        {
            get { return _keySpecification; }
            set { _keySpecification = value; }
        }

        public CspOptions CspOptions
        {
            get { return _CspOptions; }
            set { _CspOptions = value; }
        }

        public CryptographicProvider Provider
        {
            get { return _provider; }
            set { _provider = value; }
        }

        public string DistinguishedName
        {
            get { return _distinguishedName; }
            set { _distinguishedName = value; }
        }

        public string ProviderName
        {
            get { return _providerName; }
            set { _providerName = value; }
        }

    	public CertificateInfo()
    	{
    		_AlternateSubjectNames = new List<AlternateSubjectName>();
    	}
    }
}